home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1997 May / EnigmA AMIGA RUN 18 (1997)(G.R. Edizioni)(IT)[!][issue 1997-05][EAR-CD II].iso / earcd / comm / mail / yamlist.lha / listserv.rexx < prev    next >
OS/2 REXX Batch file  |  1997-02-21  |  7KB  |  213 lines

  1. /*
  2. ** $VER: ListServ.rexx 1.0 (12.30.96)
  3. **
  4. ** Written by Peter Greci <midgard@nycmetro.com>
  5. **
  6. ** It runs the following ARexx scripts to maintain a mailing List
  7. **/
  8.  
  9. /*
  10. ** $VER: Subscribe.rexx 1.0 (12.30.96)
  11. **
  12. ** Written by Peter Greci <midgard@nycmetro.com>
  13. **
  14. ** It scans the incoming folder for messages with the subject
  15. ** "Subscribe" and adds the sender to the list.
  16. **/
  17.  
  18. OPTIONS RESULTS
  19. ADDRESS YAM
  20. SetFolder 0                                  /* go to Incoming folder  */
  21. GetFolderInfo MAX; entries = RESULT          /* get number of mail    */
  22. DO i=0 TO entries-1                          /* scan all mail         */
  23.   SetMail i                                  /* set topical mail      */
  24.   GetMailInfo SUBJECT                        /* ask for subject       */
  25.   IF upper(RESULT) = 'SUBSCRIBE' THEN DO     /* criteria accomplished */
  26.     GetMailInfo FROM                         /* ask for sender and    */
  27.     ret=RESULT                               /* save as variable ret  */
  28.     ADDRESS REXX
  29.     parse var ret crap '<'user'>' .
  30.     open('plist','listserv:list','A') /* open pistol list file */
  31.     writech('plist',user)                      /* writes new user to file */
  32.     close('plist')
  33.     ADDRESS YAM
  34.     mailarchive 3
  35.     mailwrite                                 /* Sends a Welcome to new */
  36.     writemailto user                          /* subscribers            */
  37.     writesubject 'Welcome'
  38.     writeletter 'listserv:welcome'
  39.     writequeue
  40.     mailsendall
  41.     setfolder 3
  42.     maildelete
  43.     setfolder 0
  44.   END
  45. END
  46. /* exit */
  47.  
  48. /*
  49. ** $VER: Unsubscribe.rexx 1.0 (12.30.96)
  50. **
  51. ** Written by Peter Greci <midgard@nycmetro.com>
  52. **
  53. ** It scans the incoming folder for messages with the subject
  54. ** "unSubscribe" and removes the sender to the list.
  55. **/
  56.  
  57. SetFolder 0                                  /* go to Incoming folder  */
  58. GetFolderInfo MAX; entries = RESULT          /* get number of mail    */
  59. DO i=0 TO entries-1                          /* scan all mail         */
  60.   SetMail i                                  /* set topical mail      */
  61.   GetMailInfo SUBJECT                        /* ask for subject       */
  62.   IF upper(RESULT) = 'UNSUBSCRIBE' THEN DO   /* criteria accomplished */
  63.     GetMailInfo FROM                         /* ask for sender and    */
  64.     ret=RESULT                               /* save as variable ret  */
  65.     parse var ret crap '<'user'>'
  66.     if verifyuser(user) then removeuser(user)
  67.     mailarchive 3
  68.     mailwrite                                /* Bids Goodbye to a     */
  69.     writemailto user                         /* subscriber            */
  70.     writesubject 'GoodBye'
  71.     writeletter 'listserv:bye'
  72.     writequeue
  73.     mailsendall
  74.   END
  75. END
  76.  
  77. /* exit */
  78.  
  79.  
  80. /*
  81. ** $VER: Help.rexx 1.0 (12.30.96)
  82. **
  83. ** Written by Peter Greci <midgard@nycmetro.com>
  84. **
  85. ** It scans the incoming folder for messages with the subject
  86. ** "help" and sends help to the sender.
  87. **/
  88.  
  89. SetFolder 0                                  /* go to Incoming folder  */
  90. GetFolderInfo MAX; entries = RESULT          /* get number of mail    */
  91. DO i=0 TO entries-1                          /* scan all mail         */
  92.   SetMail i                                  /* set topical mail      */
  93.   GetMailInfo SUBJECT                        /* ask for subject       */
  94.   IF upper(RESULT) = 'HELP' THEN DO          /* criteria accomplished */
  95.     GetMailInfo FROM                         /* ask for sender and    */
  96.     ret=RESULT                               /* save as variable ret  */
  97.     mailarchive 3
  98.     mailwrite                                /* Sends the lists Help  */
  99.     writemailto ret                          /* file to a subscriber  */
  100.     writesubject 'Helpfile'
  101.     writeletter 'listserv:help'
  102.     writequeue
  103.     mailsendall
  104.     setfolder 3
  105.     maildelete
  106.     setfolder 0
  107.   END
  108. END
  109. /* exit */
  110.  
  111. /*
  112. ** $VER: list.rexx 1.0 (12.30.96)
  113. **
  114. ** Written by Peter Greci <midgard@nycmetro.com>
  115. **
  116. ** It scans the incoming folder for messages with the subject
  117. ** "list" and sends to the sender to the list of users subscribed.
  118. **/
  119.  
  120. SetFolder 0                                  /* go to Incoming folder  */
  121. GetFolderInfo MAX; entries = RESULT          /* get number of mail    */
  122. DO i=0 TO entries-1                          /* scan all mail         */
  123.   SetMail i                                  /* set topical mail      */
  124.   GetMailInfo SUBJECT                        /* ask for subject       */
  125.   IF upper(RESULT) = 'LIST' THEN DO          /* criteria accomplished */
  126.     GetMailInfo FROM                         /* ask for sender and    */
  127.     ret=RESULT                               /* save as variable ret  */
  128.     mailarchive 3
  129.     mailwrite                                /* Sends the list of     */
  130.     writemailto ret                          /* users to those who    */
  131.     writesubject 'Users-List'                /* who request it        */
  132.     writeletter 'listserv:list'
  133.     writequeue
  134.     mailsendall
  135.     setfolder 3
  136.     maildelete
  137.     setfolder 0
  138.   END
  139. END
  140. /* exit */
  141.  
  142. /*
  143. ** $VER: Forward.rexx 1.0 (12.30.96)
  144. **
  145. ** Written by Peter Greci <midgard@nycmetro.com>
  146. **
  147. ** It forwards messages from the incoming folder to members of the
  148. ** mailing list.
  149. **/
  150. getconfiginfo ema
  151. myemail=RESULT
  152. parsevar myemail myname '@' crap .
  153. SetFolder 0
  154. GetFolderInfo MAX; entries = RESULT
  155. ADDRESS REXX
  156. Do Until eof('plist')=1
  157. open('plist','listserv:list','R')
  158.     newad=readln('plist')
  159. ADDRESS YAM
  160. DO i=0 TO entries-1
  161.   SetMail i
  162.   GetMailInfo SUBJECT
  163.     sub=RESULT
  164.     GetMailInfo FROM
  165.     ret=RESULT
  166.     parse var ret crap '<'user'>' .
  167.     parse var newad crap '<'testad'>' .
  168.     if verifyuser(user) &,                /* validate user mail*/
  169.        upper(user)~=upper(myname) &,      /* dont send to admin*/
  170.        upper(user)~=upper(testad) then do /* dont send a bounce*/
  171.       mailforward                         
  172.       writemailto newad
  173.       writequeue
  174.     end
  175. END
  176. END
  177. if entries>0 then do
  178.       mailsendall
  179.       mailarchive 3
  180.       setfolder 3
  181.       maildelete
  182.       setfolder 0
  183. end
  184. EXIT
  185.  
  186.  
  187. verifyuser:
  188.   parse arg test .
  189.   open('checklist','listserv:list','R')
  190.   do until eof('checklist')
  191.     checkuser=readln('checklist')
  192.     if upper(checkuser)=upper(test) then do
  193.              close(checklist)
  194.         return 1
  195.     end
  196.   end
  197.   close('checklist')
  198. return 0
  199.  
  200. removeuser:
  201.   parse arg test .
  202.   open('newlist','listserv:temp','W')
  203.   open('oldlist','listserv:list','R')
  204.   do until eof('oldlist')
  205.     checkuser=readln('oldlist')
  206.     if upper(checkuser)~=upper(test) then writeln('newlist')
  207.   end
  208.   close('newlist')
  209.   close('oldlist')
  210.   delete('listserv:list')
  211.   rename('listserv:temp','listserv:list')
  212. return 0
  213.